<?php
    class Admin_PlaceController extends Main_Controller_Action
    {
        private $_arrParam;
        private $_place;
        
        public function init(){
            $this->loadTemplates('admin');
            $this->_arrParam = $this->_request->getParams();
            $this->_place = new Admin_Model_Place();
        }
        
        public function preDispatch(){
        	$auth = Zend_Auth::getInstance();
        	if(!$auth->hasIdentity()){
        		if($this->_request->getActionName() != 'login'){
        			$this->_redirect('admin/index/login');
        		}
        	}
        }
        
        public function indexAction(){
                    $this->view->headTitle('Quản lý địa điểm');
                    if($_POST['add']){
                            $this->_redirect('admin/place/create');
                    }			
                    if($_POST['orders']){
                            $result = $this->_place->listPlace();
                            $data = array();
                            foreach ($result as $row){
                                    $data[] = $row;
                            }
                            $orderArr = $this->_arrParam['ordering'];
                            $this->_place->orderTree($data, $orderArr);
                    }
                    if($_POST['refresh']){
                            $this->_redirect('admin/place');
                    }

                    $result = $this->_place->listItem(0, 'all', 0);            
                    $this->view->total = count($result);
                    $this->view->data = $result;
            }
        
        public function createAction(){
			$this->view->headTitle('Thêm địa điểm mới');
			$result = $this->_place->listPlace();
			$this->view->data = $result;
			
			if($this->_request->isPost()){
			    $filter = new Zend_Filter_StringTrim();
				$place_name = $filter->filter($this->_arrParam['place_name']);
				$parents  = $this->_arrParam['parents'];
				$flag = true;
				
				$validation = new Admin_Form_ValidatePlace();
				if(!$validation->validatePlaceName($place_name)){
					$this->view->errorPlaceName = 'Tên địa điểm không được để trống, không chứa chữ số và tối đa 200 kí tự';
					$flag = false;
				}
				
				if($flag == true){
                    $data = array(
						'place_name' => $place_name,
						'status' => '1',
                    );
					$this->_place->insertNode($data, $parents, array('position' => 'right'));
					$this->_redirect('admin/place');
				}
			}
		}
        
        public function editAction(){
            $this->view->headTitle('Sửa địa điểm');
            $place_id = $this->_arrParam['place_id'];
			$this->view->place = $this->_place->getNodeInfo($place_id);
			$this->view->data = $this->_place->listPlace();
			
			if($this->_request->isPost()){
                $filter     = new Zend_Filter_StringTrim();
				$place_name	= $filter->filter($this->_arrParam['place_name']);
				$parents	= $this->_arrParam['parents'];
				$status		= $this->_arrParam['status'];
				$flag       = true;
				
				$validation = new Admin_Form_ValidatePlace();
				if(!$validation->validatePlaceName($place_name)){
					$this->view->errorPlaceName = 'Tên địa điểm không được để trống, không chứa chữ số và tối đa 200 kí tự';
					$flag = false;
				}
				
				if($flag == true){
                    $data = array(
        				'place_name' => $place_name,
        				'status'   => $status,
    				);
					$this->_place->updateNode($data, $place_id, $parents);
					$this->_redirect('admin/place');
				}
			}
        }
        
        public function deleteAction(){
			$this->_place->removeNode($this->_arrParam['place_id']);
			$this->_redirect('admin/place');
        }
    }
